import axios, { AxiosRequestConfig } from 'axios';
import { getToken } from '@/utils/user';

// axios.defaults.withCredentials = true
const service = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 60000, // request timeout
});

const ErrorMsg = '对不起，操作失败';

// 请求拦截器
service.interceptors.request.use(
  (config: any) => {
    // 如果有token 就携带tokon
    const token = getToken();
    if (token) {
      config.headers.Authorization = `${token}`;
    }
    return config;
  },
  // 统一设置用户身份 token
  (error) => Promise.reject(error)
);
// Do something with request error
// 相应拦截器
service.interceptors.response.use(
  (response: any) => {
    if (response) {
      return response;
    }
    const error = { msg: ErrorMsg };
    return Promise.reject(error);
  },
  (error: any) => {
    console.error('error', error);
    error.msg = error.msg || ErrorMsg;
    return Promise.reject(error);
  }
);

// Do something with response error
// export default request
// 接口返回数据处理
// export default service
export default <T = any>(config: AxiosRequestConfig) => service(config).then(res => res as T);